/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_matmul_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>
#include <vector>

#include "test/matmul/fixture.h"
#include "test/types/kernel_data_types.h"
#include "test/types/to_gtest_types.h"

using DataTypeList = sycldnn::types::KernelDataTypes;
using GTestTypeList = sycldnn::types::ToGTestTypes<DataTypeList>::type;

template <typename DataType>
using MatmulBatch1Beta1FalseTrue = MatmulFixture<DataType, false, true>;
TYPED_TEST_SUITE(MatmulBatch1Beta1FalseTrue, GTestTypeList);
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  2500.,   6715.,
      10930.,  15145.,  19360.,  23575.,  27790.,  32005.,  36220.,  40435.,
      44650.,  48865.,  53080.,  57295.,  3984.,   10943.,  17902.,  24861.,
      31820.,  38779.,  45738.,  52697.,  59656.,  66615.,  73574.,  80533.,
      87492.,  94451.,  5468.,   15171.,  24874.,  34577.,  44280.,  53983.,
      63686.,  73389.,  83092.,  92795.,  102498., 112201., 121904., 131607.,
      6952.,   19399.,  31846.,  44293.,  56740.,  69187.,  81634.,  94081.,
      106528., 118975., 131422., 143869., 156316., 168763., 8436.,   23627.,
      38818.,  54009.,  69200.,  84391.,  99582.,  114773., 129964., 145155.,
      160346., 175537., 190728., 205919., 9920.,   27855.,  45790.,  63725.,
      81660.,  99595.,  117530., 135465., 153400., 171335., 189270., 207205.,
      225140., 243075., 11404.,  32083.,  52762.,  73441.,  94120.,  114799.,
      135478., 156157., 176836., 197515., 218194., 238873., 259552., 280231.,
      12888.,  36311.,  59734.,  83157.,  106580., 130003., 153426., 176849.,
      200272., 223695., 247118., 270541., 293964., 317387., 14372.,  40539.,
      66706.,  92873.,  119040., 145207., 171374., 197541., 223708., 249875.,
      276042., 302209., 328376., 354543., 15856.,  44767.,  73678.,  102589.,
      131500., 160411., 189322., 218233., 247144., 276055., 304966., 333877.,
      362788., 391699., 17340.,  48995.,  80650.,  112305., 143960., 175615.,
      207270., 238925., 270580., 302235., 333890., 365545., 397200., 428855.,
      18824.,  53223.,  87622.,  122021., 156420., 190819., 225218., 259617.,
      294016., 328415., 362814., 397213., 431612., 466011., 20308.,  57451.,
      94594.,  131737., 168880., 206023., 243166., 280309., 317452., 354595.,
      391738., 428881., 466024., 503167.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  2501.,
      6716.,   10931.,  15146.,  19361.,  23576.,  27791.,  32006.,  36221.,
      40436.,  44651.,  48866.,  53081.,  57296.,  61511.,  3986.,   10945.,
      17904.,  24863.,  31822.,  38781.,  45740.,  52699.,  59658.,  66617.,
      73576.,  80535.,  87494.,  94453.,  101412., 5471.,   15174.,  24877.,
      34580.,  44283.,  53986.,  63689.,  73392.,  83095.,  92798.,  102501.,
      112204., 121907., 131610., 141313., 6956.,   19403.,  31850.,  44297.,
      56744.,  69191.,  81638.,  94085.,  106532., 118979., 131426., 143873.,
      156320., 168767., 181214., 8441.,   23632.,  38823.,  54014.,  69205.,
      84396.,  99587.,  114778., 129969., 145160., 160351., 175542., 190733.,
      205924., 221115., 9926.,   27861.,  45796.,  63731.,  81666.,  99601.,
      117536., 135471., 153406., 171341., 189276., 207211., 225146., 243081.,
      261016., 11411.,  32090.,  52769.,  73448.,  94127.,  114806., 135485.,
      156164., 176843., 197522., 218201., 238880., 259559., 280238., 300917.,
      12896.,  36319.,  59742.,  83165.,  106588., 130011., 153434., 176857.,
      200280., 223703., 247126., 270549., 293972., 317395., 340818., 14381.,
      40548.,  66715.,  92882.,  119049., 145216., 171383., 197550., 223717.,
      249884., 276051., 302218., 328385., 354552., 380719., 15866.,  44777.,
      73688.,  102599., 131510., 160421., 189332., 218243., 247154., 276065.,
      304976., 333887., 362798., 391709., 420620., 17351.,  49006.,  80661.,
      112316., 143971., 175626., 207281., 238936., 270591., 302246., 333901.,
      365556., 397211., 428866., 460521., 18836.,  53235.,  87634.,  122033.,
      156432., 190831., 225230., 259629., 294028., 328427., 362826., 397225.,
      431624., 466023., 500422., 20321.,  57464.,  94607.,  131750., 168893.,
      206036., 243179., 280322., 317465., 354608., 391751., 428894., 466037.,
      503180., 540323.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  23081.,
      2502.,   6717.,   10932.,  15147.,  19362.,  23577.,  27792.,  32007.,
      36222.,  40437.,  44652.,  48867.,  53082.,  57297.,  61512.,  65727.,
      3988.,   10947.,  17906.,  24865.,  31824.,  38783.,  45742.,  52701.,
      59660.,  66619.,  73578.,  80537.,  87496.,  94455.,  101414., 108373.,
      5474.,   15177.,  24880.,  34583.,  44286.,  53989.,  63692.,  73395.,
      83098.,  92801.,  102504., 112207., 121910., 131613., 141316., 151019.,
      6960.,   19407.,  31854.,  44301.,  56748.,  69195.,  81642.,  94089.,
      106536., 118983., 131430., 143877., 156324., 168771., 181218., 193665.,
      8446.,   23637.,  38828.,  54019.,  69210.,  84401.,  99592.,  114783.,
      129974., 145165., 160356., 175547., 190738., 205929., 221120., 236311.,
      9932.,   27867.,  45802.,  63737.,  81672.,  99607.,  117542., 135477.,
      153412., 171347., 189282., 207217., 225152., 243087., 261022., 278957.,
      11418.,  32097.,  52776.,  73455.,  94134.,  114813., 135492., 156171.,
      176850., 197529., 218208., 238887., 259566., 280245., 300924., 321603.,
      12904.,  36327.,  59750.,  83173.,  106596., 130019., 153442., 176865.,
      200288., 223711., 247134., 270557., 293980., 317403., 340826., 364249.,
      14390.,  40557.,  66724.,  92891.,  119058., 145225., 171392., 197559.,
      223726., 249893., 276060., 302227., 328394., 354561., 380728., 406895.,
      15876.,  44787.,  73698.,  102609., 131520., 160431., 189342., 218253.,
      247164., 276075., 304986., 333897., 362808., 391719., 420630., 449541.,
      17362.,  49017.,  80672.,  112327., 143982., 175637., 207292., 238947.,
      270602., 302257., 333912., 365567., 397222., 428877., 460532., 492187.,
      18848.,  53247.,  87646.,  122045., 156444., 190843., 225242., 259641.,
      294040., 328439., 362838., 397237., 431636., 466035., 500434., 534833.,
      20334.,  57477.,  94620.,  131763., 168906., 206049., 243192., 280335.,
      317478., 354621., 391764., 428907., 466050., 503193., 540336., 577479.};
  const int batches = 1;
  const int m = 14;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  3055.,   8231.,
      13407.,  18583.,  23759.,  28935.,  34111.,  39287.,  44463.,  49639.,
      54815.,  59991.,  65167.,  70343.,  4869.,   13420.,  21971.,  30522.,
      39073.,  47624.,  56175.,  64726.,  73277.,  81828.,  90379.,  98930.,
      107481., 116032., 6683.,   18609.,  30535.,  42461.,  54387.,  66313.,
      78239.,  90165.,  102091., 114017., 125943., 137869., 149795., 161721.,
      8497.,   23798.,  39099.,  54400.,  69701.,  85002.,  100303., 115604.,
      130905., 146206., 161507., 176808., 192109., 207410., 10311.,  28987.,
      47663.,  66339.,  85015.,  103691., 122367., 141043., 159719., 178395.,
      197071., 215747., 234423., 253099., 12125.,  34176.,  56227.,  78278.,
      100329., 122380., 144431., 166482., 188533., 210584., 232635., 254686.,
      276737., 298788., 13939.,  39365.,  64791.,  90217.,  115643., 141069.,
      166495., 191921., 217347., 242773., 268199., 293625., 319051., 344477.,
      15753.,  44554.,  73355.,  102156., 130957., 159758., 188559., 217360.,
      246161., 274962., 303763., 332564., 361365., 390166., 17567.,  49743.,
      81919.,  114095., 146271., 178447., 210623., 242799., 274975., 307151.,
      339327., 371503., 403679., 435855., 19381.,  54932.,  90483.,  126034.,
      161585., 197136., 232687., 268238., 303789., 339340., 374891., 410442.,
      445993., 481544., 21195.,  60121.,  99047.,  137973., 176899., 215825.,
      254751., 293677., 332603., 371529., 410455., 449381., 488307., 527233.,
      23009.,  65310.,  107611., 149912., 192213., 234514., 276815., 319116.,
      361417., 403718., 446019., 488320., 530621., 572922., 24823.,  70499.,
      116175., 161851., 207527., 253203., 298879., 344555., 390231., 435907.,
      481583., 527259., 572935., 618611.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  3056.,
      8232.,   13408.,  18584.,  23760.,  28936.,  34112.,  39288.,  44464.,
      49640.,  54816.,  59992.,  65168.,  70344.,  75520.,  4871.,   13422.,
      21973.,  30524.,  39075.,  47626.,  56177.,  64728.,  73279.,  81830.,
      90381.,  98932.,  107483., 116034., 124585., 6686.,   18612.,  30538.,
      42464.,  54390.,  66316.,  78242.,  90168.,  102094., 114020., 125946.,
      137872., 149798., 161724., 173650., 8501.,   23802.,  39103.,  54404.,
      69705.,  85006.,  100307., 115608., 130909., 146210., 161511., 176812.,
      192113., 207414., 222715., 10316.,  28992.,  47668.,  66344.,  85020.,
      103696., 122372., 141048., 159724., 178400., 197076., 215752., 234428.,
      253104., 271780., 12131.,  34182.,  56233.,  78284.,  100335., 122386.,
      144437., 166488., 188539., 210590., 232641., 254692., 276743., 298794.,
      320845., 13946.,  39372.,  64798.,  90224.,  115650., 141076., 166502.,
      191928., 217354., 242780., 268206., 293632., 319058., 344484., 369910.,
      15761.,  44562.,  73363.,  102164., 130965., 159766., 188567., 217368.,
      246169., 274970., 303771., 332572., 361373., 390174., 418975., 17576.,
      49752.,  81928.,  114104., 146280., 178456., 210632., 242808., 274984.,
      307160., 339336., 371512., 403688., 435864., 468040., 19391.,  54942.,
      90493.,  126044., 161595., 197146., 232697., 268248., 303799., 339350.,
      374901., 410452., 446003., 481554., 517105., 21206.,  60132.,  99058.,
      137984., 176910., 215836., 254762., 293688., 332614., 371540., 410466.,
      449392., 488318., 527244., 566170., 23021.,  65322.,  107623., 149924.,
      192225., 234526., 276827., 319128., 361429., 403730., 446031., 488332.,
      530633., 572934., 615235., 24836.,  70512.,  116188., 161864., 207540.,
      253216., 298892., 344568., 390244., 435920., 481596., 527272., 572948.,
      618624., 664300.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  28256.,
      3057.,   8233.,   13409.,  18585.,  23761.,  28937.,  34113.,  39289.,
      44465.,  49641.,  54817.,  59993.,  65169.,  70345.,  75521.,  80697.,
      4873.,   13424.,  21975.,  30526.,  39077.,  47628.,  56179.,  64730.,
      73281.,  81832.,  90383.,  98934.,  107485., 116036., 124587., 133138.,
      6689.,   18615.,  30541.,  42467.,  54393.,  66319.,  78245.,  90171.,
      102097., 114023., 125949., 137875., 149801., 161727., 173653., 185579.,
      8505.,   23806.,  39107.,  54408.,  69709.,  85010.,  100311., 115612.,
      130913., 146214., 161515., 176816., 192117., 207418., 222719., 238020.,
      10321.,  28997.,  47673.,  66349.,  85025.,  103701., 122377., 141053.,
      159729., 178405., 197081., 215757., 234433., 253109., 271785., 290461.,
      12137.,  34188.,  56239.,  78290.,  100341., 122392., 144443., 166494.,
      188545., 210596., 232647., 254698., 276749., 298800., 320851., 342902.,
      13953.,  39379.,  64805.,  90231.,  115657., 141083., 166509., 191935.,
      217361., 242787., 268213., 293639., 319065., 344491., 369917., 395343.,
      15769.,  44570.,  73371.,  102172., 130973., 159774., 188575., 217376.,
      246177., 274978., 303779., 332580., 361381., 390182., 418983., 447784.,
      17585.,  49761.,  81937.,  114113., 146289., 178465., 210641., 242817.,
      274993., 307169., 339345., 371521., 403697., 435873., 468049., 500225.,
      19401.,  54952.,  90503.,  126054., 161605., 197156., 232707., 268258.,
      303809., 339360., 374911., 410462., 446013., 481564., 517115., 552666.,
      21217.,  60143.,  99069.,  137995., 176921., 215847., 254773., 293699.,
      332625., 371551., 410477., 449403., 488329., 527255., 566181., 605107.,
      23033.,  65334.,  107635., 149936., 192237., 234538., 276839., 319140.,
      361441., 403742., 446043., 488344., 530645., 572946., 615247., 657548.,
      24849.,  70525.,  116201., 161877., 207553., 253229., 298905., 344581.,
      390257., 435933., 481609., 527285., 572961., 618637., 664313., 709989.};
  const int batches = 1;
  const int m = 14;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  3687.,   9960.,
      16233.,  22506.,  28779.,  35052.,  41325.,  47598.,  53871.,  60144.,
      66417.,  72690.,  78963.,  85236.,  5877.,   16246.,  26615.,  36984.,
      47353.,  57722.,  68091.,  78460.,  88829.,  99198.,  109567., 119936.,
      130305., 140674., 8067.,   22532.,  36997.,  51462.,  65927.,  80392.,
      94857.,  109322., 123787., 138252., 152717., 167182., 181647., 196112.,
      10257.,  28818.,  47379.,  65940.,  84501.,  103062., 121623., 140184.,
      158745., 177306., 195867., 214428., 232989., 251550., 12447.,  35104.,
      57761.,  80418.,  103075., 125732., 148389., 171046., 193703., 216360.,
      239017., 261674., 284331., 306988., 14637.,  41390.,  68143.,  94896.,
      121649., 148402., 175155., 201908., 228661., 255414., 282167., 308920.,
      335673., 362426., 16827.,  47676.,  78525.,  109374., 140223., 171072.,
      201921., 232770., 263619., 294468., 325317., 356166., 387015., 417864.,
      19017.,  53962.,  88907.,  123852., 158797., 193742., 228687., 263632.,
      298577., 333522., 368467., 403412., 438357., 473302., 21207.,  60248.,
      99289.,  138330., 177371., 216412., 255453., 294494., 333535., 372576.,
      411617., 450658., 489699., 528740., 23397.,  66534.,  109671., 152808.,
      195945., 239082., 282219., 325356., 368493., 411630., 454767., 497904.,
      541041., 584178., 25587.,  72820.,  120053., 167286., 214519., 261752.,
      308985., 356218., 403451., 450684., 497917., 545150., 592383., 639616.,
      27777.,  79106.,  130435., 181764., 233093., 284422., 335751., 387080.,
      438409., 489738., 541067., 592396., 643725., 695054., 29967.,  85392.,
      140817., 196242., 251667., 307092., 362517., 417942., 473367., 528792.,
      584217., 639642., 695067., 750492.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  3688.,
      9961.,   16234.,  22507.,  28780.,  35053.,  41326.,  47599.,  53872.,
      60145.,  66418.,  72691.,  78964.,  85237.,  91510.,  5879.,   16248.,
      26617.,  36986.,  47355.,  57724.,  68093.,  78462.,  88831.,  99200.,
      109569., 119938., 130307., 140676., 151045., 8070.,   22535.,  37000.,
      51465.,  65930.,  80395.,  94860.,  109325., 123790., 138255., 152720.,
      167185., 181650., 196115., 210580., 10261.,  28822.,  47383.,  65944.,
      84505.,  103066., 121627., 140188., 158749., 177310., 195871., 214432.,
      232993., 251554., 270115., 12452.,  35109.,  57766.,  80423.,  103080.,
      125737., 148394., 171051., 193708., 216365., 239022., 261679., 284336.,
      306993., 329650., 14643.,  41396.,  68149.,  94902.,  121655., 148408.,
      175161., 201914., 228667., 255420., 282173., 308926., 335679., 362432.,
      389185., 16834.,  47683.,  78532.,  109381., 140230., 171079., 201928.,
      232777., 263626., 294475., 325324., 356173., 387022., 417871., 448720.,
      19025.,  53970.,  88915.,  123860., 158805., 193750., 228695., 263640.,
      298585., 333530., 368475., 403420., 438365., 473310., 508255., 21216.,
      60257.,  99298.,  138339., 177380., 216421., 255462., 294503., 333544.,
      372585., 411626., 450667., 489708., 528749., 567790., 23407.,  66544.,
      109681., 152818., 195955., 239092., 282229., 325366., 368503., 411640.,
      454777., 497914., 541051., 584188., 627325., 25598.,  72831.,  120064.,
      167297., 214530., 261763., 308996., 356229., 403462., 450695., 497928.,
      545161., 592394., 639627., 686860., 27789.,  79118.,  130447., 181776.,
      233105., 284434., 335763., 387092., 438421., 489750., 541079., 592408.,
      643737., 695066., 746395., 29980.,  85405.,  140830., 196255., 251680.,
      307105., 362530., 417955., 473380., 528805., 584230., 639655., 695080.,
      750505., 805930.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M14xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  34152.,
      3689.,   9962.,   16235.,  22508.,  28781.,  35054.,  41327.,  47600.,
      53873.,  60146.,  66419.,  72692.,  78965.,  85238.,  91511.,  97784.,
      5881.,   16250.,  26619.,  36988.,  47357.,  57726.,  68095.,  78464.,
      88833.,  99202.,  109571., 119940., 130309., 140678., 151047., 161416.,
      8073.,   22538.,  37003.,  51468.,  65933.,  80398.,  94863.,  109328.,
      123793., 138258., 152723., 167188., 181653., 196118., 210583., 225048.,
      10265.,  28826.,  47387.,  65948.,  84509.,  103070., 121631., 140192.,
      158753., 177314., 195875., 214436., 232997., 251558., 270119., 288680.,
      12457.,  35114.,  57771.,  80428.,  103085., 125742., 148399., 171056.,
      193713., 216370., 239027., 261684., 284341., 306998., 329655., 352312.,
      14649.,  41402.,  68155.,  94908.,  121661., 148414., 175167., 201920.,
      228673., 255426., 282179., 308932., 335685., 362438., 389191., 415944.,
      16841.,  47690.,  78539.,  109388., 140237., 171086., 201935., 232784.,
      263633., 294482., 325331., 356180., 387029., 417878., 448727., 479576.,
      19033.,  53978.,  88923.,  123868., 158813., 193758., 228703., 263648.,
      298593., 333538., 368483., 403428., 438373., 473318., 508263., 543208.,
      21225.,  60266.,  99307.,  138348., 177389., 216430., 255471., 294512.,
      333553., 372594., 411635., 450676., 489717., 528758., 567799., 606840.,
      23417.,  66554.,  109691., 152828., 195965., 239102., 282239., 325376.,
      368513., 411650., 454787., 497924., 541061., 584198., 627335., 670472.,
      25609.,  72842.,  120075., 167308., 214541., 261774., 309007., 356240.,
      403473., 450706., 497939., 545172., 592405., 639638., 686871., 734104.,
      27801.,  79130.,  130459., 181788., 233117., 284446., 335775., 387104.,
      438433., 489762., 541091., 592420., 643749., 695078., 746407., 797736.,
      29993.,  85418.,  140843., 196268., 251693., 307118., 362543., 417968.,
      473393., 528818., 584243., 639668., 695093., 750518., 805943., 861368.};
  const int batches = 1;
  const int m = 14;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  2500.,   6715.,
      10930.,  15145.,  19360.,  23575.,  27790.,  32005.,  36220.,  40435.,
      44650.,  48865.,  53080.,  57295.,  3984.,   10943.,  17902.,  24861.,
      31820.,  38779.,  45738.,  52697.,  59656.,  66615.,  73574.,  80533.,
      87492.,  94451.,  5468.,   15171.,  24874.,  34577.,  44280.,  53983.,
      63686.,  73389.,  83092.,  92795.,  102498., 112201., 121904., 131607.,
      6952.,   19399.,  31846.,  44293.,  56740.,  69187.,  81634.,  94081.,
      106528., 118975., 131422., 143869., 156316., 168763., 8436.,   23627.,
      38818.,  54009.,  69200.,  84391.,  99582.,  114773., 129964., 145155.,
      160346., 175537., 190728., 205919., 9920.,   27855.,  45790.,  63725.,
      81660.,  99595.,  117530., 135465., 153400., 171335., 189270., 207205.,
      225140., 243075., 11404.,  32083.,  52762.,  73441.,  94120.,  114799.,
      135478., 156157., 176836., 197515., 218194., 238873., 259552., 280231.,
      12888.,  36311.,  59734.,  83157.,  106580., 130003., 153426., 176849.,
      200272., 223695., 247118., 270541., 293964., 317387., 14372.,  40539.,
      66706.,  92873.,  119040., 145207., 171374., 197541., 223708., 249875.,
      276042., 302209., 328376., 354543., 15856.,  44767.,  73678.,  102589.,
      131500., 160411., 189322., 218233., 247144., 276055., 304966., 333877.,
      362788., 391699., 17340.,  48995.,  80650.,  112305., 143960., 175615.,
      207270., 238925., 270580., 302235., 333890., 365545., 397200., 428855.,
      18824.,  53223.,  87622.,  122021., 156420., 190819., 225218., 259617.,
      294016., 328415., 362814., 397213., 431612., 466011., 20308.,  57451.,
      94594.,  131737., 168880., 206023., 243166., 280309., 317452., 354595.,
      391738., 428881., 466024., 503167., 21792.,  61679.,  101566., 141453.,
      181340., 221227., 261114., 301001., 340888., 380775., 420662., 460549.,
      500436., 540323.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  2501.,
      6716.,   10931.,  15146.,  19361.,  23576.,  27791.,  32006.,  36221.,
      40436.,  44651.,  48866.,  53081.,  57296.,  61511.,  3986.,   10945.,
      17904.,  24863.,  31822.,  38781.,  45740.,  52699.,  59658.,  66617.,
      73576.,  80535.,  87494.,  94453.,  101412., 5471.,   15174.,  24877.,
      34580.,  44283.,  53986.,  63689.,  73392.,  83095.,  92798.,  102501.,
      112204., 121907., 131610., 141313., 6956.,   19403.,  31850.,  44297.,
      56744.,  69191.,  81638.,  94085.,  106532., 118979., 131426., 143873.,
      156320., 168767., 181214., 8441.,   23632.,  38823.,  54014.,  69205.,
      84396.,  99587.,  114778., 129969., 145160., 160351., 175542., 190733.,
      205924., 221115., 9926.,   27861.,  45796.,  63731.,  81666.,  99601.,
      117536., 135471., 153406., 171341., 189276., 207211., 225146., 243081.,
      261016., 11411.,  32090.,  52769.,  73448.,  94127.,  114806., 135485.,
      156164., 176843., 197522., 218201., 238880., 259559., 280238., 300917.,
      12896.,  36319.,  59742.,  83165.,  106588., 130011., 153434., 176857.,
      200280., 223703., 247126., 270549., 293972., 317395., 340818., 14381.,
      40548.,  66715.,  92882.,  119049., 145216., 171383., 197550., 223717.,
      249884., 276051., 302218., 328385., 354552., 380719., 15866.,  44777.,
      73688.,  102599., 131510., 160421., 189332., 218243., 247154., 276065.,
      304976., 333887., 362798., 391709., 420620., 17351.,  49006.,  80661.,
      112316., 143971., 175626., 207281., 238936., 270591., 302246., 333901.,
      365556., 397211., 428866., 460521., 18836.,  53235.,  87634.,  122033.,
      156432., 190831., 225230., 259629., 294028., 328427., 362826., 397225.,
      431624., 466023., 500422., 20321.,  57464.,  94607.,  131750., 168893.,
      206036., 243179., 280322., 317465., 354608., 391751., 428894., 466037.,
      503180., 540323., 21806.,  61693.,  101580., 141467., 181354., 221241.,
      261128., 301015., 340902., 380789., 420676., 460563., 500450., 540337.,
      580224.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  23081.,
      2502.,   6717.,   10932.,  15147.,  19362.,  23577.,  27792.,  32007.,
      36222.,  40437.,  44652.,  48867.,  53082.,  57297.,  61512.,  65727.,
      3988.,   10947.,  17906.,  24865.,  31824.,  38783.,  45742.,  52701.,
      59660.,  66619.,  73578.,  80537.,  87496.,  94455.,  101414., 108373.,
      5474.,   15177.,  24880.,  34583.,  44286.,  53989.,  63692.,  73395.,
      83098.,  92801.,  102504., 112207., 121910., 131613., 141316., 151019.,
      6960.,   19407.,  31854.,  44301.,  56748.,  69195.,  81642.,  94089.,
      106536., 118983., 131430., 143877., 156324., 168771., 181218., 193665.,
      8446.,   23637.,  38828.,  54019.,  69210.,  84401.,  99592.,  114783.,
      129974., 145165., 160356., 175547., 190738., 205929., 221120., 236311.,
      9932.,   27867.,  45802.,  63737.,  81672.,  99607.,  117542., 135477.,
      153412., 171347., 189282., 207217., 225152., 243087., 261022., 278957.,
      11418.,  32097.,  52776.,  73455.,  94134.,  114813., 135492., 156171.,
      176850., 197529., 218208., 238887., 259566., 280245., 300924., 321603.,
      12904.,  36327.,  59750.,  83173.,  106596., 130019., 153442., 176865.,
      200288., 223711., 247134., 270557., 293980., 317403., 340826., 364249.,
      14390.,  40557.,  66724.,  92891.,  119058., 145225., 171392., 197559.,
      223726., 249893., 276060., 302227., 328394., 354561., 380728., 406895.,
      15876.,  44787.,  73698.,  102609., 131520., 160431., 189342., 218253.,
      247164., 276075., 304986., 333897., 362808., 391719., 420630., 449541.,
      17362.,  49017.,  80672.,  112327., 143982., 175637., 207292., 238947.,
      270602., 302257., 333912., 365567., 397222., 428877., 460532., 492187.,
      18848.,  53247.,  87646.,  122045., 156444., 190843., 225242., 259641.,
      294040., 328439., 362838., 397237., 431636., 466035., 500434., 534833.,
      20334.,  57477.,  94620.,  131763., 168906., 206049., 243192., 280335.,
      317478., 354621., 391764., 428907., 466050., 503193., 540336., 577479.,
      21820.,  61707.,  101594., 141481., 181368., 221255., 261142., 301029.,
      340916., 380803., 420690., 460577., 500464., 540351., 580238., 620125.};
  const int batches = 1;
  const int m = 15;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  3055.,   8231.,
      13407.,  18583.,  23759.,  28935.,  34111.,  39287.,  44463.,  49639.,
      54815.,  59991.,  65167.,  70343.,  4869.,   13420.,  21971.,  30522.,
      39073.,  47624.,  56175.,  64726.,  73277.,  81828.,  90379.,  98930.,
      107481., 116032., 6683.,   18609.,  30535.,  42461.,  54387.,  66313.,
      78239.,  90165.,  102091., 114017., 125943., 137869., 149795., 161721.,
      8497.,   23798.,  39099.,  54400.,  69701.,  85002.,  100303., 115604.,
      130905., 146206., 161507., 176808., 192109., 207410., 10311.,  28987.,
      47663.,  66339.,  85015.,  103691., 122367., 141043., 159719., 178395.,
      197071., 215747., 234423., 253099., 12125.,  34176.,  56227.,  78278.,
      100329., 122380., 144431., 166482., 188533., 210584., 232635., 254686.,
      276737., 298788., 13939.,  39365.,  64791.,  90217.,  115643., 141069.,
      166495., 191921., 217347., 242773., 268199., 293625., 319051., 344477.,
      15753.,  44554.,  73355.,  102156., 130957., 159758., 188559., 217360.,
      246161., 274962., 303763., 332564., 361365., 390166., 17567.,  49743.,
      81919.,  114095., 146271., 178447., 210623., 242799., 274975., 307151.,
      339327., 371503., 403679., 435855., 19381.,  54932.,  90483.,  126034.,
      161585., 197136., 232687., 268238., 303789., 339340., 374891., 410442.,
      445993., 481544., 21195.,  60121.,  99047.,  137973., 176899., 215825.,
      254751., 293677., 332603., 371529., 410455., 449381., 488307., 527233.,
      23009.,  65310.,  107611., 149912., 192213., 234514., 276815., 319116.,
      361417., 403718., 446019., 488320., 530621., 572922., 24823.,  70499.,
      116175., 161851., 207527., 253203., 298879., 344555., 390231., 435907.,
      481583., 527259., 572935., 618611., 26637.,  75688.,  124739., 173790.,
      222841., 271892., 320943., 369994., 419045., 468096., 517147., 566198.,
      615249., 664300.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  3056.,
      8232.,   13408.,  18584.,  23760.,  28936.,  34112.,  39288.,  44464.,
      49640.,  54816.,  59992.,  65168.,  70344.,  75520.,  4871.,   13422.,
      21973.,  30524.,  39075.,  47626.,  56177.,  64728.,  73279.,  81830.,
      90381.,  98932.,  107483., 116034., 124585., 6686.,   18612.,  30538.,
      42464.,  54390.,  66316.,  78242.,  90168.,  102094., 114020., 125946.,
      137872., 149798., 161724., 173650., 8501.,   23802.,  39103.,  54404.,
      69705.,  85006.,  100307., 115608., 130909., 146210., 161511., 176812.,
      192113., 207414., 222715., 10316.,  28992.,  47668.,  66344.,  85020.,
      103696., 122372., 141048., 159724., 178400., 197076., 215752., 234428.,
      253104., 271780., 12131.,  34182.,  56233.,  78284.,  100335., 122386.,
      144437., 166488., 188539., 210590., 232641., 254692., 276743., 298794.,
      320845., 13946.,  39372.,  64798.,  90224.,  115650., 141076., 166502.,
      191928., 217354., 242780., 268206., 293632., 319058., 344484., 369910.,
      15761.,  44562.,  73363.,  102164., 130965., 159766., 188567., 217368.,
      246169., 274970., 303771., 332572., 361373., 390174., 418975., 17576.,
      49752.,  81928.,  114104., 146280., 178456., 210632., 242808., 274984.,
      307160., 339336., 371512., 403688., 435864., 468040., 19391.,  54942.,
      90493.,  126044., 161595., 197146., 232697., 268248., 303799., 339350.,
      374901., 410452., 446003., 481554., 517105., 21206.,  60132.,  99058.,
      137984., 176910., 215836., 254762., 293688., 332614., 371540., 410466.,
      449392., 488318., 527244., 566170., 23021.,  65322.,  107623., 149924.,
      192225., 234526., 276827., 319128., 361429., 403730., 446031., 488332.,
      530633., 572934., 615235., 24836.,  70512.,  116188., 161864., 207540.,
      253216., 298892., 344568., 390244., 435920., 481596., 527272., 572948.,
      618624., 664300., 26651.,  75702.,  124753., 173804., 222855., 271906.,
      320957., 370008., 419059., 468110., 517161., 566212., 615263., 664314.,
      713365.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  28256.,
      3057.,   8233.,   13409.,  18585.,  23761.,  28937.,  34113.,  39289.,
      44465.,  49641.,  54817.,  59993.,  65169.,  70345.,  75521.,  80697.,
      4873.,   13424.,  21975.,  30526.,  39077.,  47628.,  56179.,  64730.,
      73281.,  81832.,  90383.,  98934.,  107485., 116036., 124587., 133138.,
      6689.,   18615.,  30541.,  42467.,  54393.,  66319.,  78245.,  90171.,
      102097., 114023., 125949., 137875., 149801., 161727., 173653., 185579.,
      8505.,   23806.,  39107.,  54408.,  69709.,  85010.,  100311., 115612.,
      130913., 146214., 161515., 176816., 192117., 207418., 222719., 238020.,
      10321.,  28997.,  47673.,  66349.,  85025.,  103701., 122377., 141053.,
      159729., 178405., 197081., 215757., 234433., 253109., 271785., 290461.,
      12137.,  34188.,  56239.,  78290.,  100341., 122392., 144443., 166494.,
      188545., 210596., 232647., 254698., 276749., 298800., 320851., 342902.,
      13953.,  39379.,  64805.,  90231.,  115657., 141083., 166509., 191935.,
      217361., 242787., 268213., 293639., 319065., 344491., 369917., 395343.,
      15769.,  44570.,  73371.,  102172., 130973., 159774., 188575., 217376.,
      246177., 274978., 303779., 332580., 361381., 390182., 418983., 447784.,
      17585.,  49761.,  81937.,  114113., 146289., 178465., 210641., 242817.,
      274993., 307169., 339345., 371521., 403697., 435873., 468049., 500225.,
      19401.,  54952.,  90503.,  126054., 161605., 197156., 232707., 268258.,
      303809., 339360., 374911., 410462., 446013., 481564., 517115., 552666.,
      21217.,  60143.,  99069.,  137995., 176921., 215847., 254773., 293699.,
      332625., 371551., 410477., 449403., 488329., 527255., 566181., 605107.,
      23033.,  65334.,  107635., 149936., 192237., 234538., 276839., 319140.,
      361441., 403742., 446043., 488344., 530645., 572946., 615247., 657548.,
      24849.,  70525.,  116201., 161877., 207553., 253229., 298905., 344581.,
      390257., 435933., 481609., 527285., 572961., 618637., 664313., 709989.,
      26665.,  75716.,  124767., 173818., 222869., 271920., 320971., 370022.,
      419073., 468124., 517175., 566226., 615277., 664328., 713379., 762430.};
  const int batches = 1;
  const int m = 15;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  3687.,   9960.,
      16233.,  22506.,  28779.,  35052.,  41325.,  47598.,  53871.,  60144.,
      66417.,  72690.,  78963.,  85236.,  5877.,   16246.,  26615.,  36984.,
      47353.,  57722.,  68091.,  78460.,  88829.,  99198.,  109567., 119936.,
      130305., 140674., 8067.,   22532.,  36997.,  51462.,  65927.,  80392.,
      94857.,  109322., 123787., 138252., 152717., 167182., 181647., 196112.,
      10257.,  28818.,  47379.,  65940.,  84501.,  103062., 121623., 140184.,
      158745., 177306., 195867., 214428., 232989., 251550., 12447.,  35104.,
      57761.,  80418.,  103075., 125732., 148389., 171046., 193703., 216360.,
      239017., 261674., 284331., 306988., 14637.,  41390.,  68143.,  94896.,
      121649., 148402., 175155., 201908., 228661., 255414., 282167., 308920.,
      335673., 362426., 16827.,  47676.,  78525.,  109374., 140223., 171072.,
      201921., 232770., 263619., 294468., 325317., 356166., 387015., 417864.,
      19017.,  53962.,  88907.,  123852., 158797., 193742., 228687., 263632.,
      298577., 333522., 368467., 403412., 438357., 473302., 21207.,  60248.,
      99289.,  138330., 177371., 216412., 255453., 294494., 333535., 372576.,
      411617., 450658., 489699., 528740., 23397.,  66534.,  109671., 152808.,
      195945., 239082., 282219., 325356., 368493., 411630., 454767., 497904.,
      541041., 584178., 25587.,  72820.,  120053., 167286., 214519., 261752.,
      308985., 356218., 403451., 450684., 497917., 545150., 592383., 639616.,
      27777.,  79106.,  130435., 181764., 233093., 284422., 335751., 387080.,
      438409., 489738., 541067., 592396., 643725., 695054., 29967.,  85392.,
      140817., 196242., 251667., 307092., 362517., 417942., 473367., 528792.,
      584217., 639642., 695067., 750492., 32157.,  91678.,  151199., 210720.,
      270241., 329762., 389283., 448804., 508325., 567846., 627367., 686888.,
      746409., 805930.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  3688.,
      9961.,   16234.,  22507.,  28780.,  35053.,  41326.,  47599.,  53872.,
      60145.,  66418.,  72691.,  78964.,  85237.,  91510.,  5879.,   16248.,
      26617.,  36986.,  47355.,  57724.,  68093.,  78462.,  88831.,  99200.,
      109569., 119938., 130307., 140676., 151045., 8070.,   22535.,  37000.,
      51465.,  65930.,  80395.,  94860.,  109325., 123790., 138255., 152720.,
      167185., 181650., 196115., 210580., 10261.,  28822.,  47383.,  65944.,
      84505.,  103066., 121627., 140188., 158749., 177310., 195871., 214432.,
      232993., 251554., 270115., 12452.,  35109.,  57766.,  80423.,  103080.,
      125737., 148394., 171051., 193708., 216365., 239022., 261679., 284336.,
      306993., 329650., 14643.,  41396.,  68149.,  94902.,  121655., 148408.,
      175161., 201914., 228667., 255420., 282173., 308926., 335679., 362432.,
      389185., 16834.,  47683.,  78532.,  109381., 140230., 171079., 201928.,
      232777., 263626., 294475., 325324., 356173., 387022., 417871., 448720.,
      19025.,  53970.,  88915.,  123860., 158805., 193750., 228695., 263640.,
      298585., 333530., 368475., 403420., 438365., 473310., 508255., 21216.,
      60257.,  99298.,  138339., 177380., 216421., 255462., 294503., 333544.,
      372585., 411626., 450667., 489708., 528749., 567790., 23407.,  66544.,
      109681., 152818., 195955., 239092., 282229., 325366., 368503., 411640.,
      454777., 497914., 541051., 584188., 627325., 25598.,  72831.,  120064.,
      167297., 214530., 261763., 308996., 356229., 403462., 450695., 497928.,
      545161., 592394., 639627., 686860., 27789.,  79118.,  130447., 181776.,
      233105., 284434., 335763., 387092., 438421., 489750., 541079., 592408.,
      643737., 695066., 746395., 29980.,  85405.,  140830., 196255., 251680.,
      307105., 362530., 417955., 473380., 528805., 584230., 639655., 695080.,
      750505., 805930., 32171.,  91692.,  151213., 210734., 270255., 329776.,
      389297., 448818., 508339., 567860., 627381., 686902., 746423., 805944.,
      865465.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M15xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  34152.,
      3689.,   9962.,   16235.,  22508.,  28781.,  35054.,  41327.,  47600.,
      53873.,  60146.,  66419.,  72692.,  78965.,  85238.,  91511.,  97784.,
      5881.,   16250.,  26619.,  36988.,  47357.,  57726.,  68095.,  78464.,
      88833.,  99202.,  109571., 119940., 130309., 140678., 151047., 161416.,
      8073.,   22538.,  37003.,  51468.,  65933.,  80398.,  94863.,  109328.,
      123793., 138258., 152723., 167188., 181653., 196118., 210583., 225048.,
      10265.,  28826.,  47387.,  65948.,  84509.,  103070., 121631., 140192.,
      158753., 177314., 195875., 214436., 232997., 251558., 270119., 288680.,
      12457.,  35114.,  57771.,  80428.,  103085., 125742., 148399., 171056.,
      193713., 216370., 239027., 261684., 284341., 306998., 329655., 352312.,
      14649.,  41402.,  68155.,  94908.,  121661., 148414., 175167., 201920.,
      228673., 255426., 282179., 308932., 335685., 362438., 389191., 415944.,
      16841.,  47690.,  78539.,  109388., 140237., 171086., 201935., 232784.,
      263633., 294482., 325331., 356180., 387029., 417878., 448727., 479576.,
      19033.,  53978.,  88923.,  123868., 158813., 193758., 228703., 263648.,
      298593., 333538., 368483., 403428., 438373., 473318., 508263., 543208.,
      21225.,  60266.,  99307.,  138348., 177389., 216430., 255471., 294512.,
      333553., 372594., 411635., 450676., 489717., 528758., 567799., 606840.,
      23417.,  66554.,  109691., 152828., 195965., 239102., 282239., 325376.,
      368513., 411650., 454787., 497924., 541061., 584198., 627335., 670472.,
      25609.,  72842.,  120075., 167308., 214541., 261774., 309007., 356240.,
      403473., 450706., 497939., 545172., 592405., 639638., 686871., 734104.,
      27801.,  79130.,  130459., 181788., 233117., 284446., 335775., 387104.,
      438433., 489762., 541091., 592420., 643749., 695078., 746407., 797736.,
      29993.,  85418.,  140843., 196268., 251693., 307118., 362543., 417968.,
      473393., 528818., 584243., 639668., 695093., 750518., 805943., 861368.,
      32185.,  91706.,  151227., 210748., 270269., 329790., 389311., 448832.,
      508353., 567874., 627395., 686916., 746437., 805958., 865479., 925000.};
  const int batches = 1;
  const int m = 15;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK14xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  2500.,   6715.,
      10930.,  15145.,  19360.,  23575.,  27790.,  32005.,  36220.,  40435.,
      44650.,  48865.,  53080.,  57295.,  3984.,   10943.,  17902.,  24861.,
      31820.,  38779.,  45738.,  52697.,  59656.,  66615.,  73574.,  80533.,
      87492.,  94451.,  5468.,   15171.,  24874.,  34577.,  44280.,  53983.,
      63686.,  73389.,  83092.,  92795.,  102498., 112201., 121904., 131607.,
      6952.,   19399.,  31846.,  44293.,  56740.,  69187.,  81634.,  94081.,
      106528., 118975., 131422., 143869., 156316., 168763., 8436.,   23627.,
      38818.,  54009.,  69200.,  84391.,  99582.,  114773., 129964., 145155.,
      160346., 175537., 190728., 205919., 9920.,   27855.,  45790.,  63725.,
      81660.,  99595.,  117530., 135465., 153400., 171335., 189270., 207205.,
      225140., 243075., 11404.,  32083.,  52762.,  73441.,  94120.,  114799.,
      135478., 156157., 176836., 197515., 218194., 238873., 259552., 280231.,
      12888.,  36311.,  59734.,  83157.,  106580., 130003., 153426., 176849.,
      200272., 223695., 247118., 270541., 293964., 317387., 14372.,  40539.,
      66706.,  92873.,  119040., 145207., 171374., 197541., 223708., 249875.,
      276042., 302209., 328376., 354543., 15856.,  44767.,  73678.,  102589.,
      131500., 160411., 189322., 218233., 247144., 276055., 304966., 333877.,
      362788., 391699., 17340.,  48995.,  80650.,  112305., 143960., 175615.,
      207270., 238925., 270580., 302235., 333890., 365545., 397200., 428855.,
      18824.,  53223.,  87622.,  122021., 156420., 190819., 225218., 259617.,
      294016., 328415., 362814., 397213., 431612., 466011., 20308.,  57451.,
      94594.,  131737., 168880., 206023., 243166., 280309., 317452., 354595.,
      391738., 428881., 466024., 503167., 21792.,  61679.,  101566., 141453.,
      181340., 221227., 261114., 301001., 340888., 380775., 420662., 460549.,
      500436., 540323., 23276.,  65907.,  108538., 151169., 193800., 236431.,
      279062., 321693., 364324., 406955., 449586., 492217., 534848., 577479.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK14xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  2501.,
      6716.,   10931.,  15146.,  19361.,  23576.,  27791.,  32006.,  36221.,
      40436.,  44651.,  48866.,  53081.,  57296.,  61511.,  3986.,   10945.,
      17904.,  24863.,  31822.,  38781.,  45740.,  52699.,  59658.,  66617.,
      73576.,  80535.,  87494.,  94453.,  101412., 5471.,   15174.,  24877.,
      34580.,  44283.,  53986.,  63689.,  73392.,  83095.,  92798.,  102501.,
      112204., 121907., 131610., 141313., 6956.,   19403.,  31850.,  44297.,
      56744.,  69191.,  81638.,  94085.,  106532., 118979., 131426., 143873.,
      156320., 168767., 181214., 8441.,   23632.,  38823.,  54014.,  69205.,
      84396.,  99587.,  114778., 129969., 145160., 160351., 175542., 190733.,
      205924., 221115., 9926.,   27861.,  45796.,  63731.,  81666.,  99601.,
      117536., 135471., 153406., 171341., 189276., 207211., 225146., 243081.,
      261016., 11411.,  32090.,  52769.,  73448.,  94127.,  114806., 135485.,
      156164., 176843., 197522., 218201., 238880., 259559., 280238., 300917.,
      12896.,  36319.,  59742.,  83165.,  106588., 130011., 153434., 176857.,
      200280., 223703., 247126., 270549., 293972., 317395., 340818., 14381.,
      40548.,  66715.,  92882.,  119049., 145216., 171383., 197550., 223717.,
      249884., 276051., 302218., 328385., 354552., 380719., 15866.,  44777.,
      73688.,  102599., 131510., 160421., 189332., 218243., 247154., 276065.,
      304976., 333887., 362798., 391709., 420620., 17351.,  49006.,  80661.,
      112316., 143971., 175626., 207281., 238936., 270591., 302246., 333901.,
      365556., 397211., 428866., 460521., 18836.,  53235.,  87634.,  122033.,
      156432., 190831., 225230., 259629., 294028., 328427., 362826., 397225.,
      431624., 466023., 500422., 20321.,  57464.,  94607.,  131750., 168893.,
      206036., 243179., 280322., 317465., 354608., 391751., 428894., 466037.,
      503180., 540323., 21806.,  61693.,  101580., 141467., 181354., 221241.,
      261128., 301015., 340902., 380789., 420676., 460563., 500450., 540337.,
      580224., 23291.,  65922.,  108553., 151184., 193815., 236446., 279077.,
      321708., 364339., 406970., 449601., 492232., 534863., 577494., 620125.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK14xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1016.,   2487.,   3958.,   5429.,   6900.,   8371.,   9842.,   11313.,
      12784.,  14255.,  15726.,  17197.,  18668.,  20139.,  21610.,  23081.,
      2502.,   6717.,   10932.,  15147.,  19362.,  23577.,  27792.,  32007.,
      36222.,  40437.,  44652.,  48867.,  53082.,  57297.,  61512.,  65727.,
      3988.,   10947.,  17906.,  24865.,  31824.,  38783.,  45742.,  52701.,
      59660.,  66619.,  73578.,  80537.,  87496.,  94455.,  101414., 108373.,
      5474.,   15177.,  24880.,  34583.,  44286.,  53989.,  63692.,  73395.,
      83098.,  92801.,  102504., 112207., 121910., 131613., 141316., 151019.,
      6960.,   19407.,  31854.,  44301.,  56748.,  69195.,  81642.,  94089.,
      106536., 118983., 131430., 143877., 156324., 168771., 181218., 193665.,
      8446.,   23637.,  38828.,  54019.,  69210.,  84401.,  99592.,  114783.,
      129974., 145165., 160356., 175547., 190738., 205929., 221120., 236311.,
      9932.,   27867.,  45802.,  63737.,  81672.,  99607.,  117542., 135477.,
      153412., 171347., 189282., 207217., 225152., 243087., 261022., 278957.,
      11418.,  32097.,  52776.,  73455.,  94134.,  114813., 135492., 156171.,
      176850., 197529., 218208., 238887., 259566., 280245., 300924., 321603.,
      12904.,  36327.,  59750.,  83173.,  106596., 130019., 153442., 176865.,
      200288., 223711., 247134., 270557., 293980., 317403., 340826., 364249.,
      14390.,  40557.,  66724.,  92891.,  119058., 145225., 171392., 197559.,
      223726., 249893., 276060., 302227., 328394., 354561., 380728., 406895.,
      15876.,  44787.,  73698.,  102609., 131520., 160431., 189342., 218253.,
      247164., 276075., 304986., 333897., 362808., 391719., 420630., 449541.,
      17362.,  49017.,  80672.,  112327., 143982., 175637., 207292., 238947.,
      270602., 302257., 333912., 365567., 397222., 428877., 460532., 492187.,
      18848.,  53247.,  87646.,  122045., 156444., 190843., 225242., 259641.,
      294040., 328439., 362838., 397237., 431636., 466035., 500434., 534833.,
      20334.,  57477.,  94620.,  131763., 168906., 206049., 243192., 280335.,
      317478., 354621., 391764., 428907., 466050., 503193., 540336., 577479.,
      21820.,  61707.,  101594., 141481., 181368., 221255., 261142., 301029.,
      340916., 380803., 420690., 460577., 500464., 540351., 580238., 620125.,
      23306.,  65937.,  108568., 151199., 193830., 236461., 279092., 321723.,
      364354., 406985., 449616., 492247., 534878., 577509., 620140., 662771.};
  const int batches = 1;
  const int m = 16;
  const int k = 14;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK15xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  3055.,   8231.,
      13407.,  18583.,  23759.,  28935.,  34111.,  39287.,  44463.,  49639.,
      54815.,  59991.,  65167.,  70343.,  4869.,   13420.,  21971.,  30522.,
      39073.,  47624.,  56175.,  64726.,  73277.,  81828.,  90379.,  98930.,
      107481., 116032., 6683.,   18609.,  30535.,  42461.,  54387.,  66313.,
      78239.,  90165.,  102091., 114017., 125943., 137869., 149795., 161721.,
      8497.,   23798.,  39099.,  54400.,  69701.,  85002.,  100303., 115604.,
      130905., 146206., 161507., 176808., 192109., 207410., 10311.,  28987.,
      47663.,  66339.,  85015.,  103691., 122367., 141043., 159719., 178395.,
      197071., 215747., 234423., 253099., 12125.,  34176.,  56227.,  78278.,
      100329., 122380., 144431., 166482., 188533., 210584., 232635., 254686.,
      276737., 298788., 13939.,  39365.,  64791.,  90217.,  115643., 141069.,
      166495., 191921., 217347., 242773., 268199., 293625., 319051., 344477.,
      15753.,  44554.,  73355.,  102156., 130957., 159758., 188559., 217360.,
      246161., 274962., 303763., 332564., 361365., 390166., 17567.,  49743.,
      81919.,  114095., 146271., 178447., 210623., 242799., 274975., 307151.,
      339327., 371503., 403679., 435855., 19381.,  54932.,  90483.,  126034.,
      161585., 197136., 232687., 268238., 303789., 339340., 374891., 410442.,
      445993., 481544., 21195.,  60121.,  99047.,  137973., 176899., 215825.,
      254751., 293677., 332603., 371529., 410455., 449381., 488307., 527233.,
      23009.,  65310.,  107611., 149912., 192213., 234514., 276815., 319116.,
      361417., 403718., 446019., 488320., 530621., 572922., 24823.,  70499.,
      116175., 161851., 207527., 253203., 298879., 344555., 390231., 435907.,
      481583., 527259., 572935., 618611., 26637.,  75688.,  124739., 173790.,
      222841., 271892., 320943., 369994., 419045., 468096., 517147., 566198.,
      615249., 664300., 28451.,  80877.,  133303., 185729., 238155., 290581.,
      343007., 395433., 447859., 500285., 552711., 605137., 657563., 709989.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK15xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  3056.,
      8232.,   13408.,  18584.,  23760.,  28936.,  34112.,  39288.,  44464.,
      49640.,  54816.,  59992.,  65168.,  70344.,  75520.,  4871.,   13422.,
      21973.,  30524.,  39075.,  47626.,  56177.,  64728.,  73279.,  81830.,
      90381.,  98932.,  107483., 116034., 124585., 6686.,   18612.,  30538.,
      42464.,  54390.,  66316.,  78242.,  90168.,  102094., 114020., 125946.,
      137872., 149798., 161724., 173650., 8501.,   23802.,  39103.,  54404.,
      69705.,  85006.,  100307., 115608., 130909., 146210., 161511., 176812.,
      192113., 207414., 222715., 10316.,  28992.,  47668.,  66344.,  85020.,
      103696., 122372., 141048., 159724., 178400., 197076., 215752., 234428.,
      253104., 271780., 12131.,  34182.,  56233.,  78284.,  100335., 122386.,
      144437., 166488., 188539., 210590., 232641., 254692., 276743., 298794.,
      320845., 13946.,  39372.,  64798.,  90224.,  115650., 141076., 166502.,
      191928., 217354., 242780., 268206., 293632., 319058., 344484., 369910.,
      15761.,  44562.,  73363.,  102164., 130965., 159766., 188567., 217368.,
      246169., 274970., 303771., 332572., 361373., 390174., 418975., 17576.,
      49752.,  81928.,  114104., 146280., 178456., 210632., 242808., 274984.,
      307160., 339336., 371512., 403688., 435864., 468040., 19391.,  54942.,
      90493.,  126044., 161595., 197146., 232697., 268248., 303799., 339350.,
      374901., 410452., 446003., 481554., 517105., 21206.,  60132.,  99058.,
      137984., 176910., 215836., 254762., 293688., 332614., 371540., 410466.,
      449392., 488318., 527244., 566170., 23021.,  65322.,  107623., 149924.,
      192225., 234526., 276827., 319128., 361429., 403730., 446031., 488332.,
      530633., 572934., 615235., 24836.,  70512.,  116188., 161864., 207540.,
      253216., 298892., 344568., 390244., 435920., 481596., 527272., 572948.,
      618624., 664300., 26651.,  75702.,  124753., 173804., 222855., 271906.,
      320957., 370008., 419059., 468110., 517161., 566212., 615263., 664314.,
      713365., 28466.,  80892.,  133318., 185744., 238170., 290596., 343022.,
      395448., 447874., 500300., 552726., 605152., 657578., 710004., 762430.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK15xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1241.,   3042.,   4843.,   6644.,   8445.,   10246.,  12047.,  13848.,
      15649.,  17450.,  19251.,  21052.,  22853.,  24654.,  26455.,  28256.,
      3057.,   8233.,   13409.,  18585.,  23761.,  28937.,  34113.,  39289.,
      44465.,  49641.,  54817.,  59993.,  65169.,  70345.,  75521.,  80697.,
      4873.,   13424.,  21975.,  30526.,  39077.,  47628.,  56179.,  64730.,
      73281.,  81832.,  90383.,  98934.,  107485., 116036., 124587., 133138.,
      6689.,   18615.,  30541.,  42467.,  54393.,  66319.,  78245.,  90171.,
      102097., 114023., 125949., 137875., 149801., 161727., 173653., 185579.,
      8505.,   23806.,  39107.,  54408.,  69709.,  85010.,  100311., 115612.,
      130913., 146214., 161515., 176816., 192117., 207418., 222719., 238020.,
      10321.,  28997.,  47673.,  66349.,  85025.,  103701., 122377., 141053.,
      159729., 178405., 197081., 215757., 234433., 253109., 271785., 290461.,
      12137.,  34188.,  56239.,  78290.,  100341., 122392., 144443., 166494.,
      188545., 210596., 232647., 254698., 276749., 298800., 320851., 342902.,
      13953.,  39379.,  64805.,  90231.,  115657., 141083., 166509., 191935.,
      217361., 242787., 268213., 293639., 319065., 344491., 369917., 395343.,
      15769.,  44570.,  73371.,  102172., 130973., 159774., 188575., 217376.,
      246177., 274978., 303779., 332580., 361381., 390182., 418983., 447784.,
      17585.,  49761.,  81937.,  114113., 146289., 178465., 210641., 242817.,
      274993., 307169., 339345., 371521., 403697., 435873., 468049., 500225.,
      19401.,  54952.,  90503.,  126054., 161605., 197156., 232707., 268258.,
      303809., 339360., 374911., 410462., 446013., 481564., 517115., 552666.,
      21217.,  60143.,  99069.,  137995., 176921., 215847., 254773., 293699.,
      332625., 371551., 410477., 449403., 488329., 527255., 566181., 605107.,
      23033.,  65334.,  107635., 149936., 192237., 234538., 276839., 319140.,
      361441., 403742., 446043., 488344., 530645., 572946., 615247., 657548.,
      24849.,  70525.,  116201., 161877., 207553., 253229., 298905., 344581.,
      390257., 435933., 481609., 527285., 572961., 618637., 664313., 709989.,
      26665.,  75716.,  124767., 173818., 222869., 271920., 320971., 370022.,
      419073., 468124., 517175., 566226., 615277., 664328., 713379., 762430.,
      28481.,  80907.,  133333., 185759., 238185., 290611., 343037., 395463.,
      447889., 500315., 552741., 605167., 657593., 710019., 762445., 814871.};
  const int batches = 1;
  const int m = 16;
  const int k = 15;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK16xN14) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  3687.,   9960.,
      16233.,  22506.,  28779.,  35052.,  41325.,  47598.,  53871.,  60144.,
      66417.,  72690.,  78963.,  85236.,  5877.,   16246.,  26615.,  36984.,
      47353.,  57722.,  68091.,  78460.,  88829.,  99198.,  109567., 119936.,
      130305., 140674., 8067.,   22532.,  36997.,  51462.,  65927.,  80392.,
      94857.,  109322., 123787., 138252., 152717., 167182., 181647., 196112.,
      10257.,  28818.,  47379.,  65940.,  84501.,  103062., 121623., 140184.,
      158745., 177306., 195867., 214428., 232989., 251550., 12447.,  35104.,
      57761.,  80418.,  103075., 125732., 148389., 171046., 193703., 216360.,
      239017., 261674., 284331., 306988., 14637.,  41390.,  68143.,  94896.,
      121649., 148402., 175155., 201908., 228661., 255414., 282167., 308920.,
      335673., 362426., 16827.,  47676.,  78525.,  109374., 140223., 171072.,
      201921., 232770., 263619., 294468., 325317., 356166., 387015., 417864.,
      19017.,  53962.,  88907.,  123852., 158797., 193742., 228687., 263632.,
      298577., 333522., 368467., 403412., 438357., 473302., 21207.,  60248.,
      99289.,  138330., 177371., 216412., 255453., 294494., 333535., 372576.,
      411617., 450658., 489699., 528740., 23397.,  66534.,  109671., 152808.,
      195945., 239082., 282219., 325356., 368493., 411630., 454767., 497904.,
      541041., 584178., 25587.,  72820.,  120053., 167286., 214519., 261752.,
      308985., 356218., 403451., 450684., 497917., 545150., 592383., 639616.,
      27777.,  79106.,  130435., 181764., 233093., 284422., 335751., 387080.,
      438409., 489738., 541067., 592396., 643725., 695054., 29967.,  85392.,
      140817., 196242., 251667., 307092., 362517., 417942., 473367., 528792.,
      584217., 639642., 695067., 750492., 32157.,  91678.,  151199., 210720.,
      270241., 329762., 389283., 448804., 508325., 567846., 627367., 686888.,
      746409., 805930., 34347.,  97964.,  161581., 225198., 288815., 352432.,
      416049., 479666., 543283., 606900., 670517., 734134., 797751., 861368.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 14;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK16xN15) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  3688.,
      9961.,   16234.,  22507.,  28780.,  35053.,  41326.,  47599.,  53872.,
      60145.,  66418.,  72691.,  78964.,  85237.,  91510.,  5879.,   16248.,
      26617.,  36986.,  47355.,  57724.,  68093.,  78462.,  88831.,  99200.,
      109569., 119938., 130307., 140676., 151045., 8070.,   22535.,  37000.,
      51465.,  65930.,  80395.,  94860.,  109325., 123790., 138255., 152720.,
      167185., 181650., 196115., 210580., 10261.,  28822.,  47383.,  65944.,
      84505.,  103066., 121627., 140188., 158749., 177310., 195871., 214432.,
      232993., 251554., 270115., 12452.,  35109.,  57766.,  80423.,  103080.,
      125737., 148394., 171051., 193708., 216365., 239022., 261679., 284336.,
      306993., 329650., 14643.,  41396.,  68149.,  94902.,  121655., 148408.,
      175161., 201914., 228667., 255420., 282173., 308926., 335679., 362432.,
      389185., 16834.,  47683.,  78532.,  109381., 140230., 171079., 201928.,
      232777., 263626., 294475., 325324., 356173., 387022., 417871., 448720.,
      19025.,  53970.,  88915.,  123860., 158805., 193750., 228695., 263640.,
      298585., 333530., 368475., 403420., 438365., 473310., 508255., 21216.,
      60257.,  99298.,  138339., 177380., 216421., 255462., 294503., 333544.,
      372585., 411626., 450667., 489708., 528749., 567790., 23407.,  66544.,
      109681., 152818., 195955., 239092., 282229., 325366., 368503., 411640.,
      454777., 497914., 541051., 584188., 627325., 25598.,  72831.,  120064.,
      167297., 214530., 261763., 308996., 356229., 403462., 450695., 497928.,
      545161., 592394., 639627., 686860., 27789.,  79118.,  130447., 181776.,
      233105., 284434., 335763., 387092., 438421., 489750., 541079., 592408.,
      643737., 695066., 746395., 29980.,  85405.,  140830., 196255., 251680.,
      307105., 362530., 417955., 473380., 528805., 584230., 639655., 695080.,
      750505., 805930., 32171.,  91692.,  151213., 210734., 270255., 329776.,
      389297., 448818., 508339., 567860., 627381., 686902., 746423., 805944.,
      865465., 34362.,  97979.,  161596., 225213., 288830., 352447., 416064.,
      479681., 543298., 606915., 670532., 734149., 797766., 861383., 925000.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 15;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}
TYPED_TEST(MatmulBatch1Beta1FalseTrue, M16xK16xN16) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1497.,   3674.,   5851.,   8028.,   10205.,  12382.,  14559.,  16736.,
      18913.,  21090.,  23267.,  25444.,  27621.,  29798.,  31975.,  34152.,
      3689.,   9962.,   16235.,  22508.,  28781.,  35054.,  41327.,  47600.,
      53873.,  60146.,  66419.,  72692.,  78965.,  85238.,  91511.,  97784.,
      5881.,   16250.,  26619.,  36988.,  47357.,  57726.,  68095.,  78464.,
      88833.,  99202.,  109571., 119940., 130309., 140678., 151047., 161416.,
      8073.,   22538.,  37003.,  51468.,  65933.,  80398.,  94863.,  109328.,
      123793., 138258., 152723., 167188., 181653., 196118., 210583., 225048.,
      10265.,  28826.,  47387.,  65948.,  84509.,  103070., 121631., 140192.,
      158753., 177314., 195875., 214436., 232997., 251558., 270119., 288680.,
      12457.,  35114.,  57771.,  80428.,  103085., 125742., 148399., 171056.,
      193713., 216370., 239027., 261684., 284341., 306998., 329655., 352312.,
      14649.,  41402.,  68155.,  94908.,  121661., 148414., 175167., 201920.,
      228673., 255426., 282179., 308932., 335685., 362438., 389191., 415944.,
      16841.,  47690.,  78539.,  109388., 140237., 171086., 201935., 232784.,
      263633., 294482., 325331., 356180., 387029., 417878., 448727., 479576.,
      19033.,  53978.,  88923.,  123868., 158813., 193758., 228703., 263648.,
      298593., 333538., 368483., 403428., 438373., 473318., 508263., 543208.,
      21225.,  60266.,  99307.,  138348., 177389., 216430., 255471., 294512.,
      333553., 372594., 411635., 450676., 489717., 528758., 567799., 606840.,
      23417.,  66554.,  109691., 152828., 195965., 239102., 282239., 325376.,
      368513., 411650., 454787., 497924., 541061., 584198., 627335., 670472.,
      25609.,  72842.,  120075., 167308., 214541., 261774., 309007., 356240.,
      403473., 450706., 497939., 545172., 592405., 639638., 686871., 734104.,
      27801.,  79130.,  130459., 181788., 233117., 284446., 335775., 387104.,
      438433., 489762., 541091., 592420., 643749., 695078., 746407., 797736.,
      29993.,  85418.,  140843., 196268., 251693., 307118., 362543., 417968.,
      473393., 528818., 584243., 639668., 695093., 750518., 805943., 861368.,
      32185.,  91706.,  151227., 210748., 270269., 329790., 389311., 448832.,
      508353., 567874., 627395., 686916., 746437., 805958., 865479., 925000.,
      34377.,  97994.,  161611., 225228., 288845., 352462., 416079., 479696.,
      543313., 606930., 670547., 734164., 797781., 861398., 925015., 988632.};
  const int batches = 1;
  const int m = 16;
  const int k = 16;
  const int n = 16;
  const auto beta = static_cast<DataType>(1);
  const DataType max_input_val = 2048.0;
  this->run(exp_out, batches, m, k, n, beta, 0, 0, 0, max_input_val);
}